package cn.edu.kzjsxy.graduationproject.tool;

import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @Author：chén jiā jùn
 * @Create：2024年04月02日17:46
 * 加密算法
 */
@Component
public class SHA256Encryptor {

	/**
	 * 对字符串进行SHA-256加密
	 * @param input 原始字符串
	 * @return 加密后的字符串，以十六进制形式返回
	 */
	public  String encrypt(String input) {
		if(input==null||input.isEmpty()){
			return  null;
		}
		try {
			// 创建 MessageDigest 实例，指定算法为 SHA-256
			MessageDigest md = MessageDigest.getInstance("SHA-256");
			// 对输入字符串进行加密
			md.update(input.getBytes(StandardCharsets.UTF_8));
			byte[] digest = md.digest();
			// 将加密后的字节数组转换成十六进制字符串
			StringBuilder hexString = new StringBuilder();
			for (byte b : digest) {
				String hex = Integer.toHexString(0xff & b);
				if (hex.length() == 1) {
					hexString.append('0');
				}
				hexString.append(hex);
			}
			return hexString.toString();
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
			return null;
		}
	}
}
